當專案進開到發一定程度時,測試人員就會開始進行測試的作業,
說到測試,最常聽到的就是白箱測試(White-box testing)與黑箱測試(Black-box testing),接下來就針對這2種測試方式及內容來進行分享。
SA(System Analyst)會進行系統分析規劃、系統架構設計、資料流、系統流程規劃,並會對該專案產出對應的SRD(System requirement and development),此時測試人員就依據SA定義出的文件進行測試,而白箱測試主要就是針對資料流測試(Data flow coverage)及系統流程測試(control flow coverage)。
測試人員在測試一個功能時會輸入資料,當進行一連串的計算後,會得最後的結果,當這資料從輸入到輸出中間資料會有所變換,就是所謂的資料流。
而資料流測試,就是要確保這些資料流在功能執行運算的過程中是正確無誤的。
跟據SA定義出來的系統流程後,應可繪出一張流程圖,用來說明該系統的執行步驟、順序,在這流程圖中會有所一條或多條路徑,而這些路徑是用來貫穿程式的起點和終點。
而測試人員設計的測試案例,必需包含所有的路徑,以確保流程的正確性。
三角型的條件有二
1.邊長必須大於0
2.兩邊之和是否大於第三邊
邏輯如下
public boolean isTrangle(int i, int j, int k) {
if(i<=0 || j<=0 || k<=0) {
return false;
}
if(i+j>k || i+k>j || j+k>i) {
return true;
}
return false;
}
資料流測試的重點就會著重於輸入的i,j,k的值是否有被放到正確的位置,以及運算時所產生的值是否正確。
系統流程測試的重點就會在於我們的測試案例是否有包含所有的路徑,而依此案例我們可得知至少有三條路徑:
(1) i,j,k的值不得小於0
(2) 兩邊之和大於第三邊
(3) 兩邊之和小於第三邊
對於每一條路徑,我們可以輸入各種的值來進行測試,這時候就會回來檢視測試人員所設計測試案例的廣度及深度。
黑箱測試也可以稱為功能測試,測試人員不需要了解資料流與系統流程,只要知道需求規格是什麼,並確認輸入及輸出有符合規格即可。
這種測試方式是從使用者的角度來進行測試,因為我們無法確認使用者會如何操作我們的功能,測試時可以輸入一些極端的值、過長的字串、跳脫字元...等等,可以把自己想像成駭客來對系統進行測試,若測試的結果不如預期,例如輸入極端的值導致系統當機,或著輸入一些sql字串、跳脫字元而導致了SQL Injection等等,都要即時請開發人員進行處理。
規格如下:
1.整數
2.範圍:1~100
例:1+2=3
當測試人員只能依據規則來進行測試時,我們可以列出以下的測試案例:
白箱測試可以讓我們清楚測試的目標在那裡,黑箱測試可以讓我們模擬駭客的方式進行測試,各有優缺點,測試時可以撘配使用,只要能提早找出系統問題,都可以免於日後線上系統災難的發生。